iT邦幫忙

2021 iThome 鐵人賽

DAY 24
0
自我挑戰組

Discord-bot,從0開始到做出一個機器人系列 第 24

使用貼圖新增與移除身分組

  • 分享至 

  • xImage
  •  

使用Auttaja

  • 點擊Dashboard

  • 選擇Assignable & Giveable Roles

  • 在聊天室輸入 -assignrole 海豹 (海豹是我這邊設置的身分組)

使用Atias

  • 選擇roles

  • 在下方可以自定義

  • 示意圖

使用自定義的Bot

  • 身分組的部分請自己是先設定

  • 使用reaction來查看表情符號

# cogs/reaction.py
# 略
@commands.Cog.listener()
async def on_reaction_add(self, reaction, user):
    print(reaction)
  • 結果示意圖

  • 再來使用on_raw_reaction_add()

@commands.Cog.listener()
async def on_raw_reaction_add(self, user_data):
    if user_data.message_id == 你指定的留言:
        if str(user_data.emoji) == "指定的符號":
            # 取得伺服器
            guild = self.bot.get_guild(user_data.guild_id)
            # 指定身分組
            role = guild.get_role(身分組ID)
            await user_data.member.add_roles(role)
            await user_data.member.send(f"你取得了{role}身分組")
  • on_raw_reaction_remove()的部分
@commands.Cog.listener()
async def on_raw_reaction_remove(self, user_data):
    if user_data.message_id == 你指定的留言:
        if str(user_data.emoji) == '指定的符號':
            # 取得伺服器
            guild = self, bot.get_guild(user_data.guild_id)
            user = await guild.fetch_member(user_data.user_id)
            await user.remove_roles(guild.get_role(身分組ID))
            await user.send(f"已移除{role}身分組"")
  • 示意圖

  • 可以到審核日誌查看

備註

  • 因為只有on_raw_reaction_add()能使用member,所以刪除可以拿user_id代替

上一篇
關於報錯這檔事
下一篇
終極密碼DC版
系列文
Discord-bot,從0開始到做出一個機器人30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言